home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / SoundSprocket.p < prev    next >
Encoding:
Text File  |  1998-02-12  |  13.7 KB  |  279 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        SoundSprocket.p
  3.  
  4.      Contains:    Games Sprockets: SoundSprocket interfaces
  5.  
  6.      Version:    Technology:    NetSprocket 1.0
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1996-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT SoundSprocket;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __SOUNDSPROCKET__}
  28. {$SETC __SOUNDSPROCKET__ := 1}
  29.  
  30. {$I+}
  31. {$SETC SoundSprocketIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __MACTYPES__}
  35. {$I MacTypes.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __EVENTS__}
  38. {$I Events.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __QD3D__}
  41. {$I QD3D.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __QD3DCAMERA__}
  44. {$I QD3DCamera.p}
  45. {$ENDC}
  46.  
  47.  
  48. {$PUSH}
  49. {$ALIGN POWER}
  50. {$LibExport+}
  51.  
  52. {******************************************************************************
  53.  *    This stuff will be moved to Errors.h in a subsequent release
  54.  *****************************************************************************}
  55.  
  56. CONST
  57.     kSSpInternalErr                = -30340;
  58.     kSSpVersionErr                = -30341;
  59.     kSSpCantInstallErr            = -30342;
  60.     kSSpParallelUpVectorErr        = -30343;
  61.     kSSpScaleToZeroErr            = -30344;
  62.  
  63.  
  64. {******************************************************************************
  65.  *    SndSetInfo/SndGetInfo Messages
  66.  *****************************************************************************}
  67. {    The siSSpCPULoadLimit = '3dll' selector for SndGetInfo fills in a value of    }
  68. {    type UInt32.                                                                }
  69.  
  70.     kSSpSpeakerKind_Stereo        = 0;
  71.     kSSpSpeakerKind_Mono        = 1;
  72.     kSSpSpeakerKind_Headphones    = 2;
  73.  
  74.  
  75. {    This is the data type is used with the SndGet/SetInfo selector                }
  76. {    siSSpSpeakerSetup = '3dst'                                                    }
  77.  
  78. TYPE
  79.     SSpSpeakerSetupDataPtr = ^SSpSpeakerSetupData;
  80.     SSpSpeakerSetupData = RECORD
  81.         speakerKind:            UInt32;                                    {  Speaker configuration                 }
  82.         speakerAngle:            Single;                                    {  Angle formed by user and speakers     }
  83.         reserved0:                UInt32;                                    {  Reserved for future use -- set to 0     }
  84.         reserved1:                UInt32;                                    {  Reserved for future use -- set to 0     }
  85.     END;
  86.  
  87.  
  88. CONST
  89.     kSSpMedium_Air                = 0;
  90.     kSSpMedium_Water            = 1;
  91.  
  92.  
  93.     kSSpSourceMode_Unfiltered    = 0;                            {  No filtering applied                     }
  94.     kSSpSourceMode_Localized    = 1;                            {  Localized by source position             }
  95.     kSSpSourceMode_Ambient        = 2;                            {  Coming from all around                 }
  96.     kSSpSourceMode_Binaural        = 3;                            {  Already binaurally localized             }
  97.  
  98.  
  99.  
  100. TYPE
  101.     SSpLocationDataPtr = ^SSpLocationData;
  102.     SSpLocationData = RECORD
  103.         elevation:                Single;                                    {  Angle of the meridian -- pos is up     }
  104.         azimuth:                Single;                                    {  Angle of the parallel -- pos is left     }
  105.         distance:                Single;                                    {  Distance between source and listener     }
  106.         projectionAngle:        Single;                                    {  Cos(angle) between cone and listener     }
  107.         sourceVelocity:            Single;                                    {  Speed of source toward the listener     }
  108.         listenerVelocity:        Single;                                    { Speed of listener toward the source     }
  109.     END;
  110.  
  111.     SSpVirtualSourceDataPtr = ^SSpVirtualSourceData;
  112.     SSpVirtualSourceData = RECORD
  113.         attenuation:            Single;                                    {  Attenuation factor                     }
  114.         location:                SSpLocationData;                        {  Location of virtual source             }
  115.     END;
  116.  
  117. {    This is the data type is used with the SndGet/SetInfo selector                }
  118. {    siSSpLocalization = '3dif'                                                    }
  119.     SSpLocalizationDataPtr = ^SSpLocalizationData;
  120.     SSpLocalizationData = RECORD
  121.         cpuLoad:                UInt32;                                    {  CPU load vs. quality -- 0 is best     }
  122.         medium:                    UInt32;                                    {  Medium for sound propagation             }
  123.         humidity:                Single;                                    {  Humidity when medium is air             }
  124.         roomSize:                Single;                                    {  Reverb model -- distance bet. walls     }
  125.         roomReflectivity:        Single;                                    { Reverb model -- bounce attenuation     }
  126.         reverbAttenuation:        Single;                                    { Reverb model -- mix level             }
  127.         sourceMode:                UInt32;                                    {  Type of filtering to apply             }
  128.         referenceDistance:        Single;                                    { Nominal distance for recording         }
  129.         coneAngleCos:            Single;                                    {  Cos(angle/2) of attenuation cone         }
  130.         coneAttenuation:        Single;                                    {  Attenuation outside the cone             }
  131.         currentLocation:        SSpLocationData;                        {  Location of the sound                  }
  132.         reserved0:                UInt32;                                    {  Reserved for future use -- set to 0     }
  133.         reserved1:                UInt32;                                    {  Reserved for future use -- set to 0     }
  134.         reserved2:                UInt32;                                    {  Reserved for future use -- set to 0     }
  135.         reserved3:                UInt32;                                    {  Reserved for future use -- set to 0     }
  136.         virtualSourceCount:        UInt32;                                    { Number of reflections                 }
  137.         virtualSource:            ARRAY [0..3] OF SSpVirtualSourceData;    { The reflections                         }
  138.     END;
  139.  
  140. {$IFC TARGET_CPU_PPC }
  141. {$IFC TYPED_FUNCTION_POINTERS}
  142.     SSpEventProcPtr = FUNCTION(VAR inEvent: EventRecord): BOOLEAN; C;
  143. {$ELSEC}
  144.     SSpEventProcPtr = ProcPtr;
  145. {$ENDC}
  146.  
  147. {******************************************************************************
  148.  *    Global functions
  149.  *****************************************************************************}
  150. FUNCTION SSpConfigureSpeakerSetup(inEventProcPtr: SSpEventProcPtr): OSStatus; C;
  151. FUNCTION SSpGetCPULoadLimit(VAR outCPULoadLimit: UInt32): OSStatus; C;
  152.  
  153. {******************************************************************************
  154.  *    Routines for Maniulating Listeners
  155.  *****************************************************************************}
  156.  
  157. TYPE
  158.     SSpListenerReference = ^LONGINT;
  159. FUNCTION SSpListener_New(VAR outListenerReference: SSpListenerReference): OSStatus; C;
  160. FUNCTION SSpListener_Dispose(inListenerReference: SSpListenerReference): OSStatus; C;
  161. FUNCTION SSpListener_SetTransform(inListenerReference: SSpListenerReference; {CONST}VAR inTransform: TQ3Matrix4x4): OSStatus; C;
  162. FUNCTION SSpListener_GetTransform(inListenerReference: SSpListenerReference; VAR outTransform: TQ3Matrix4x4): OSStatus; C;
  163. FUNCTION SSpListener_SetPosition(inListenerReference: SSpListenerReference; {CONST}VAR inPosition: TQ3Point3D): OSStatus; C;
  164. FUNCTION SSpListener_GetPosition(inListenerReference: SSpListenerReference; VAR outPosition: TQ3Point3D): OSStatus; C;
  165. FUNCTION SSpListener_SetOrientation(inListenerReference: SSpListenerReference; {CONST}VAR inOrientation: TQ3Vector3D): OSStatus; C;
  166. FUNCTION SSpListener_GetOrientation(inListenerReference: SSpListenerReference; VAR outOrientation: TQ3Vector3D): OSStatus; C;
  167. FUNCTION SSpListener_SetUpVector(inListenerReference: SSpListenerReference; {CONST}VAR inUpVector: TQ3Vector3D): OSStatus; C;
  168. FUNCTION SSpListener_GetUpVector(inListenerReference: SSpListenerReference; VAR outUpVector: TQ3Vector3D): OSStatus; C;
  169. FUNCTION SSpListener_SetCameraPlacement(inListenerReference: SSpListenerReference; {CONST}VAR inCameraPlacement: TQ3CameraPlacement): OSStatus; C;
  170. FUNCTION SSpListener_GetCameraPlacement(inListenerReference: SSpListenerReference; VAR outCameraPlacement: TQ3CameraPlacement): OSStatus; C;
  171. FUNCTION SSpListener_SetVelocity(inListenerReference: SSpListenerReference; {CONST}VAR inVelocity: TQ3Vector3D): OSStatus; C;
  172. FUNCTION SSpListener_GetVelocity(inListenerReference: SSpListenerReference; VAR outVelocity: TQ3Vector3D): OSStatus; C;
  173. FUNCTION SSpListener_GetActualVelocity(inListenerReference: SSpListenerReference; VAR outVelocity: TQ3Vector3D): OSStatus; C;
  174. FUNCTION SSpListener_SetMedium(inListenerReference: SSpListenerReference; inMedium: UInt32; inHumidity: Single): OSStatus; C;
  175. FUNCTION SSpListener_GetMedium(inListenerReference: SSpListenerReference; VAR outMedium: UInt32; VAR outHumidity: Single): OSStatus; C;
  176. FUNCTION SSpListener_SetReverb(inListenerReference: SSpListenerReference; inRoomSize: Single; inRoomReflectivity: Single; inReverbAttenuation: Single): OSStatus; C;
  177. FUNCTION SSpListener_GetReverb(inListenerReference: SSpListenerReference; VAR outRoomSize: Single; VAR outRoomReflectivity: Single; VAR outReverbAttenuation: Single): OSStatus; C;
  178. FUNCTION SSpListener_SetMetersPerUnit(inListenerReference: SSpListenerReference; inMetersPerUnit: Single): OSStatus; C;
  179. FUNCTION SSpListener_GetMetersPerUnit(inListenerReference: SSpListenerReference; VAR outMetersPerUnit: Single): OSStatus; C;
  180.  
  181. {******************************************************************************
  182.  *    Routines for Manipulating Sources
  183.  *****************************************************************************}
  184.  
  185. TYPE
  186.     SSpSourceReference = ^LONGINT;
  187. FUNCTION SSpSource_New(VAR outSourceReference: SSpSourceReference): OSStatus; C;
  188. FUNCTION SSpSource_Dispose(inSourceReference: SSpSourceReference): OSStatus; C;
  189. FUNCTION SSpSource_CalcLocalization(inSourceReference: SSpSourceReference; inListenerReference: SSpListenerReference; VAR out3DInfo: SSpLocalizationData): OSStatus; C;
  190. FUNCTION SSpSource_SetTransform(inSourceReference: SSpSourceReference; {CONST}VAR inTransform: TQ3Matrix4x4): OSStatus; C;
  191. FUNCTION SSpSource_GetTransform(inSourceReference: SSpSourceReference; VAR outTransform: TQ3Matrix4x4): OSStatus; C;
  192. FUNCTION SSpSource_SetPosition(inSourceReference: SSpSourceReference; {CONST}VAR inPosition: TQ3Point3D): OSStatus; C;
  193. FUNCTION SSpSource_GetPosition(inSourceReference: SSpSourceReference; VAR outPosition: TQ3Point3D): OSStatus; C;
  194. FUNCTION SSpSource_SetOrientation(inSourceReference: SSpSourceReference; {CONST}VAR inOrientation: TQ3Vector3D): OSStatus; C;
  195. FUNCTION SSpSource_GetOrientation(inSourceReference: SSpSourceReference; VAR outOrientation: TQ3Vector3D): OSStatus; C;
  196. FUNCTION SSpSource_SetUpVector(inSourceReference: SSpSourceReference; {CONST}VAR inUpVector: TQ3Vector3D): OSStatus; C;
  197. FUNCTION SSpSource_GetUpVector(inSourceReference: SSpSourceReference; VAR outUpVector: TQ3Vector3D): OSStatus; C;
  198. FUNCTION SSpSource_SetCameraPlacement(inSourceReference: SSpSourceReference; {CONST}VAR inCameraPlacement: TQ3CameraPlacement): OSStatus; C;
  199. FUNCTION SSpSource_GetCameraPlacement(inSourceReference: SSpSourceReference; VAR outCameraPlacement: TQ3CameraPlacement): OSStatus; C;
  200. FUNCTION SSpSource_SetVelocity(inSourceReference: SSpSourceReference; {CONST}VAR inVelocity: TQ3Vector3D): OSStatus; C;
  201. FUNCTION SSpSource_GetVelocity(inSourceReference: SSpSourceReference; VAR outVelocity: TQ3Vector3D): OSStatus; C;
  202. FUNCTION SSpSource_GetActualVelocity(inSourceReference: SSpSourceReference; VAR outVelocity: TQ3Vector3D): OSStatus; C;
  203. FUNCTION SSpSource_SetCPULoad(inSourceReference: SSpSourceReference; inCPULoad: UInt32): OSStatus; C;
  204. FUNCTION SSpSource_GetCPULoad(inSourceReference: SSpSourceReference; VAR outCPULoad: UInt32): OSStatus; C;
  205. FUNCTION SSpSource_SetMode(inSourceReference: SSpSourceReference; inMode: UInt32): OSStatus; C;
  206. FUNCTION SSpSource_GetMode(inSourceReference: SSpSourceReference; VAR outMode: UInt32): OSStatus; C;
  207. FUNCTION SSpSource_SetReferenceDistance(inSourceReference: SSpSourceReference; inReferenceDistance: Single): OSStatus; C;
  208. FUNCTION SSpSource_GetReferenceDistance(inSourceReference: SSpSourceReference; VAR outReferenceDistance: Single): OSStatus; C;
  209. FUNCTION SSpSource_SetSize(inSourceReference: SSpSourceReference; inLength: Single; inWidth: Single; inHeight: Single): OSStatus; C;
  210. FUNCTION SSpSource_GetSize(inSourceReference: SSpSourceReference; VAR outLength: Single; VAR outWidth: Single; VAR outHeight: Single): OSStatus; C;
  211. FUNCTION SSpSource_SetAngularAttenuation(inSourceReference: SSpSourceReference; inConeAngle: Single; inConeAttenuation: Single): OSStatus; C;
  212. FUNCTION SSpSource_GetAngularAttenuation(inSourceReference: SSpSourceReference; VAR outConeAngle: Single; VAR outConeAttenuation: Single): OSStatus; C;
  213. {$ENDC}  {TARGET_CPU_PPC}
  214.  
  215.  
  216. {******************************************************************************
  217.  *    MORE LATE-BREAKING NEWS
  218.  *
  219.  *    The SndGetInfo selector siSSpFilterVersion and datatype SSpFilterVersionData
  220.  *    have been removed in favor of an alternate way of accessing filter version
  221.  *    information.  The following function may be used for this purpose.
  222.  *******************************************************************************
  223. // **************************** GetSSpFilterVersion ****************************
  224. // Finds the manufacturer and version number of the SoundSprocket filter that
  225. // may be installed.  inManufacturer should be the manufacturer code specified
  226. // at the installation time, which may be zero to allow any manufacturer.
  227. // If no error is encountered, outManufacturer is set to the actual manufacturer
  228. // code and outMajorVersion and outMinorVersion are set to the component
  229. // specification level and manufacturer's implementation revision, respectively.
  230. OSStatus GetSSpFilterVersion(
  231.     OSType                    inManufacturer,
  232.     OSType*                    outManufacturer,
  233.     UInt32*                    outMajorVersion,
  234.     UInt32*                    outMinorVersion)
  235. (
  236.     OSStatus                err;
  237.     ComponentDescription    description;
  238.     Component                componentRef;
  239.     UInt32                    vers;
  240.     
  241.     // Set up the component description
  242.     description.componentType            = kSoundEffectsType;
  243.     description.componentSubType        = kSSpLocalizationSubType;
  244.     description.componentManufacturer    = inManufacturer;
  245.     description.componentFlags            = 0;        
  246.     description.componentFlagsMask        = 0;    
  247.     
  248.     // Find a component matching the description
  249.     componentRef = FindNextComponent(nil, &description);
  250.     if (componentRef == nil)  return couldntGetRequiredComponent;
  251.     
  252.     // Get the component description (for the manufacturer code)
  253.     err = GetComponentInfo(componentRef, &description, nil, nil, nil);
  254.     if (err != noErr)  return err;
  255.     
  256.     // Get the version composite
  257.     vers = (UInt32) GetComponentVersion((ComponentInstance) componentRef);
  258.     
  259.     // Return the results
  260.     *outManufacturer = description.componentManufacturer;
  261.     *outMajorVersion = HiWord(vers);
  262.     *outMinorVersion = LoWord(vers);
  263.     
  264.     return noErr;
  265. )
  266. ******************************************************************************}
  267.  
  268.  
  269. {$ALIGN RESET}
  270. {$POP}
  271.  
  272. {$SETC UsingIncludes := SoundSprocketIncludes}
  273.  
  274. {$ENDC} {__SOUNDSPROCKET__}
  275.  
  276. {$IFC NOT UsingIncludes}
  277.  END.
  278. {$ENDC}
  279.